/* eslint indent: ["off"] */
/* eslint space-before-function-paren: ["off"] */

// 引入 lodash 库，用于数据处理和操作
const _ = require('lodash')
// 引入 path 模块，用于处理文件和目录路径
const path = require('path')
// 获取项目根目录
const ROOT_DIR = path.join(__dirname, '..')
// helpers 目录
const HELPERS_DIR = path.join(ROOT_DIR, 'helpers')
// 读取所有数据
let { allValues } = require(path.join(HELPERS_DIR, 'readAllValues.js'))

// 假设前100期是有效历史数据，剩余的期次是待预测数据
const first100 = allValues.slice(0, 100) // 获取前100期数据
const remaining = allValues.slice(100) // 获取剩余的期次数据

// 初始化历史数据
let historyData = [...first100] // 从前100期开始

// 构建转移矩阵
function buildTransitionMatrix(data) {
  const transitionMatrix = {}

  // 遍历历史数据，构建转移矩阵
  for (let i = 0; i < data.length - 1; i++) {
    const currentNumber = data[i].number
    const nextNumber = data[i + 1].number

    if (!transitionMatrix[currentNumber]) {
      transitionMatrix[currentNumber] = {}
    }

    if (!transitionMatrix[currentNumber][nextNumber]) {
      transitionMatrix[currentNumber][nextNumber] = 0
    }

    transitionMatrix[currentNumber][nextNumber]++
  }

  // 归一化转移矩阵
  Object.keys(transitionMatrix).forEach((currentNumber) => {
    const totalTransitions = Object.values(transitionMatrix[currentNumber]).reduce((sum, count) => sum + count, 0)
    Object.keys(transitionMatrix[currentNumber]).forEach((nextNumber) => {
      transitionMatrix[currentNumber][nextNumber] /= totalTransitions
    })
  })

  return transitionMatrix
}

// 构建转移矩阵
const transitionMatrix = buildTransitionMatrix(historyData)

// 打印转移矩阵
console.log('转移矩阵:', transitionMatrix)
